[INFO] fetching crate ic-asset-router 0.1.1...
[INFO] testing ic-asset-router-0.1.1 against try#0abe69e6c16114311cc2700e972492e64d69c28f for pr-154065-1
[INFO] extracting crate ic-asset-router 0.1.1 into /workspace/builds/worker-1-tc2/source
[INFO] started tweaking crates.io crate ic-asset-router 0.1.1
[INFO] finished tweaking crates.io crate ic-asset-router 0.1.1
[INFO] tweaked toml for crates.io crate ic-asset-router 0.1.1 written to /workspace/builds/worker-1-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate ic-asset-router 0.1.1 on toolchain 0abe69e6c16114311cc2700e972492e64d69c28f
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+0abe69e6c16114311cc2700e972492e64d69c28f" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate ic-asset-router 0.1.1 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+0abe69e6c16114311cc2700e972492e64d69c28f" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+0abe69e6c16114311cc2700e972492e64d69c28f" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 59d55f9adbb4676b0d1b6af714951b9f0f51510e44d070b7ab974ff975de4341
[INFO] running `Command { std: "docker" "start" "-a" "59d55f9adbb4676b0d1b6af714951b9f0f51510e44d070b7ab974ff975de4341", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "59d55f9adbb4676b0d1b6af714951b9f0f51510e44d070b7ab974ff975de4341", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "59d55f9adbb4676b0d1b6af714951b9f0f51510e44d070b7ab974ff975de4341", kill_on_drop: false }`
[INFO] [stdout] 59d55f9adbb4676b0d1b6af714951b9f0f51510e44d070b7ab974ff975de4341
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+0abe69e6c16114311cc2700e972492e64d69c28f" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 5eaa41537ead7891e3854a899d7186045554b08e6f47cb210aa83bd1fda0857f
[INFO] running `Command { std: "docker" "start" "-a" "5eaa41537ead7891e3854a899d7186045554b08e6f47cb210aa83bd1fda0857f", kill_on_drop: false }`
[INFO] [stderr]    Compiling unicode-ident v1.0.23
[INFO] [stderr]    Compiling typenum v1.19.0
[INFO] [stderr]    Compiling find-msvc-tools v0.1.9
[INFO] [stderr]    Compiling object v0.37.3
[INFO] [stderr]    Compiling rustversion v1.0.22
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling cpufeatures v0.2.17
[INFO] [stderr]    Compiling libc v0.2.181
[INFO] [stderr]    Compiling crc32fast v1.5.0
[INFO] [stderr]    Compiling proc-macro2 v1.0.106
[INFO] [stderr]    Compiling cc v1.2.55
[INFO] [stderr]    Compiling anyhow v1.0.101
[INFO] [stderr]    Compiling either v1.15.0
[INFO] [stderr]    Compiling paste v1.0.15
[INFO] [stderr]    Compiling quote v1.0.44
[INFO] [stderr]    Compiling syn v2.0.115
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]    Compiling serde_bytes v0.11.19
[INFO] [stderr]    Compiling data-encoding v2.10.0
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]    Compiling num-integer v0.1.46
[INFO] [stderr]    Compiling hex v0.4.3
[INFO] [stderr]    Compiling block-buffer v0.10.4
[INFO] [stderr]    Compiling crypto-common v0.1.7
[INFO] [stderr]    Compiling leb128 v0.2.5
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling stacker v0.1.23
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling slotmap v1.1.1
[INFO] [stderr]    Compiling ic-cdk-executor v1.0.2
[INFO] [stderr]    Compiling ic0 v1.0.1
[INFO] [stderr]    Compiling percent-encoding v2.3.2
[INFO] [stderr]    Compiling half v1.8.3
[INFO] [stderr]    Compiling bytes v1.11.1
[INFO] [stderr]    Compiling form_urlencoded v1.2.2
[INFO] [stderr]    Compiling ic-representation-independent-hash v3.1.0
[INFO] [stderr]    Compiling include_dir_macros v0.7.4
[INFO] [stderr]    Compiling urlencoding v2.1.3
[INFO] [stderr]    Compiling ryu v1.0.23
[INFO] [stderr]    Compiling http v1.4.0
[INFO] [stderr]    Compiling include_dir v0.7.4
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling ar_archive_writer v0.5.1
[INFO] [stderr]    Compiling darling_core v0.20.11
[INFO] [stderr]    Compiling psm v0.1.30
[INFO] [stderr]    Compiling binread_derive v2.1.0
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling candid_derive v0.10.22
[INFO] [stderr]    Compiling strum_macros v0.26.4
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling ic-asset-router-macros v0.1.1
[INFO] [stderr]    Compiling binread v2.2.0
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling darling_macro v0.20.11
[INFO] [stderr]    Compiling strum v0.26.3
[INFO] [stderr]    Compiling darling v0.20.11
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling num-bigint v0.4.6
[INFO] [stderr]    Compiling ic_principal v0.1.2
[INFO] [stderr]    Compiling ic-error-types v0.2.0
[INFO] [stderr]    Compiling ic-certification v3.1.0
[INFO] [stderr]    Compiling serde_cbor v0.11.2
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling candid v0.10.22
[INFO] [stderr]    Compiling ic-management-canister-types v0.3.3
[INFO] [stderr]    Compiling ic-http-certification v3.1.0
[INFO] [stderr]    Compiling ic-cdk-macros v0.18.7
[INFO] [stderr]    Compiling ic-cdk v0.18.7
[INFO] [stderr]    Compiling ic-asset-router v0.1.1 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 19s
[INFO] running `Command { std: "docker" "inspect" "5eaa41537ead7891e3854a899d7186045554b08e6f47cb210aa83bd1fda0857f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "5eaa41537ead7891e3854a899d7186045554b08e6f47cb210aa83bd1fda0857f", kill_on_drop: false }`
[INFO] [stdout] 5eaa41537ead7891e3854a899d7186045554b08e6f47cb210aa83bd1fda0857f
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+0abe69e6c16114311cc2700e972492e64d69c28f" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 8e0e279d9faeb77ab1e112adee334a6e86bc9340ee89953ece39e687359c885d
[INFO] running `Command { std: "docker" "start" "-a" "8e0e279d9faeb77ab1e112adee334a6e86bc9340ee89953ece39e687359c885d", kill_on_drop: false }`
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling zerocopy v0.8.39
[INFO] [stderr]    Compiling rustix v1.1.3
[INFO] [stderr]    Compiling darling_core v0.20.11
[INFO] [stderr]    Compiling linux-raw-sys v0.11.0
[INFO] [stderr]    Compiling getrandom v0.4.1
[INFO] [stderr]    Compiling once_cell v1.21.3
[INFO] [stderr]    Compiling wait-timeout v0.2.1
[INFO] [stderr]    Compiling rand_core v0.9.5
[INFO] [stderr]    Compiling regex-syntax v0.8.9
[INFO] [stderr]    Compiling rand_xorshift v0.4.0
[INFO] [stderr]    Compiling rand v0.9.2
[INFO] [stderr]    Compiling darling_macro v0.20.11
[INFO] [stderr]    Compiling darling v0.20.11
[INFO] [stderr]    Compiling tempfile v3.25.0
[INFO] [stderr]    Compiling ic-cdk-macros v0.18.7
[INFO] [stderr]    Compiling rusty-fork v0.3.1
[INFO] [stderr]    Compiling ic-cdk v0.18.7
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling rand_chacha v0.9.0
[INFO] [stderr]    Compiling proptest v1.10.0
[INFO] [stderr]    Compiling ic-asset-router v0.1.1 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 39.05s
[INFO] running `Command { std: "docker" "inspect" "8e0e279d9faeb77ab1e112adee334a6e86bc9340ee89953ece39e687359c885d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "8e0e279d9faeb77ab1e112adee334a6e86bc9340ee89953ece39e687359c885d", kill_on_drop: false }`
[INFO] [stdout] 8e0e279d9faeb77ab1e112adee334a6e86bc9340ee89953ece39e687359c885d
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+0abe69e6c16114311cc2700e972492e64d69c28f" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 881c217586ea793ec4cfc0b182fc2ac601c27905da2d22dd1420f6abb5a9f1a6
[INFO] running `Command { std: "docker" "start" "-a" "881c217586ea793ec4cfc0b182fc2ac601c27905da2d22dd1420f6abb5a9f1a6", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.35s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/ic_asset_router-72e7a472504842dc)
[INFO] [stdout] 
[INFO] [stdout] running 318 tests
[INFO] [stdout] test asset_router::tests::asset_certification_config_default ... ok
[INFO] [stdout] test asset_router::tests::asset_encoding_as_str ... ok
[INFO] [stdout] test asset_router::tests::asset_router_error_display ... ok
[INFO] [stdout] test asset_router::tests::build_cel_expression_string_response_only ... ok
[INFO] [stdout] test asset_router::tests::build_cel_expression_string_full ... ok
[INFO] [stdout] test asset_router::tests::certify_asset_skip_succeeds ... ok
[INFO] [stdout] test asset_router::tests::certify_asset_auto_detects_content_type ... ok
[INFO] [stdout] test asset_router::tests::certify_asset_registers_fallback ... ok
[INFO] [stdout] test asset_router::tests::certify_asset_response_only_succeeds ... ok
[INFO] [stdout] test asset_router::tests::certify_asset_duplicate_path_replaces ... ok
[INFO] [stdout] test asset_router::tests::certify_asset_full_returns_error ... ok
[INFO] [stdout] test asset_router::tests::certify_asset_stores_encodings ... ok
[INFO] [stdout] test asset_router::tests::certify_asset_registers_aliases ... ok
[INFO] [stdout] test asset_router::tests::certify_asset_uses_explicit_content_type ... ok
[INFO] [stdout] test asset_router::tests::certify_dynamic_asset_skip_succeeds ... ok
[INFO] [stdout] test asset_router::tests::certify_dynamic_asset_response_only_succeeds ... ok
[INFO] [stdout] test asset_router::tests::delete_asset_nonexistent_is_noop ... ok
[INFO] [stdout] test asset_router::tests::delete_asset_removes_aliases ... ok
[INFO] [stdout] test asset_router::tests::certify_asset_with_additional_headers ... ok
[INFO] [stdout] test asset_router::tests::delete_asset_removes_asset_and_tree_entry ... ok
[INFO] [stdout] test asset_router::tests::certify_dynamic_asset_full_succeeds ... ok
[INFO] [stdout] test asset_router::tests::delete_asset_removes_fallback ... ok
[INFO] [stdout] test asset_router::tests::build_cel_expression_string_skip ... ok
[INFO] [stdout] test asset_router::tests::delete_asset_via_alias_resolves_and_removes_canonical ... ok
[INFO] [stdout] test asset_router::tests::delete_nonexistent_asset_is_noop ... ok
[INFO] [stdout] test asset_router::tests::get_asset_via_canonical_and_alias ... ok
[INFO] [stdout] test asset_router::tests::get_asset_mut_works ... ok
[INFO] [stdout] test asset_router::tests::certify_asset_stores_certified_at_and_ttl ... ok
[INFO] [stdout] test asset_router::tests::is_dynamic_false_when_not_marked_dynamic ... ok
[INFO] [stdout] test asset_router::tests::is_dynamic_true_when_marked_dynamic ... ok
[INFO] [stdout] test asset_router::tests::is_dynamic_true_without_ttl ... ok
[INFO] [stdout] test asset_router::tests::is_expired_static_assets_never_expire ... ok
[INFO] [stdout] test asset_router::tests::get_asset_nonexistent_returns_none ... ok
[INFO] [stdout] test asset_router::tests::new_router_is_empty ... ok
[INFO] [stdout] test asset_router::tests::serve_asset_encoding_negotiation_gzip_fallback ... ok
[INFO] [stdout] test asset_router::tests::mode_switching_certify_delete_recertify ... ok
[INFO] [stdout] test asset_router::tests::recertification_replaces_old_hash ... ok
[INFO] [stdout] test asset_router::tests::serve_asset_encoding_negotiation_brotli_preferred ... ok
[INFO] [stdout] test asset_router::tests::root_hash_changes_after_certify ... ok
[INFO] [stdout] test asset_router::tests::root_hash_changes_after_delete ... ok
[INFO] [stdout] test asset_router::tests::serve_asset_includes_cel_expression_header ... ok
[INFO] [stdout] test asset_router::tests::serve_asset_exact_match ... ok
[INFO] [stdout] test asset_router::tests::serve_asset_alias_resolves ... ok
[INFO] [stdout] test asset_router::tests::serve_asset_encoding_negotiation_identity_fallback ... ok
[INFO] [stdout] test asset_router::tests::serve_asset_longest_prefix_fallback_wins ... ok
[INFO] [stdout] test assets::tests::certified_asset_fresh_ttl_not_expired ... ok
[INFO] [stdout] test asset_router::tests::serve_asset_no_match_returns_none ... ok
[INFO] [stdout] test assets::tests::certified_asset_no_ttl_never_expires ... ok
[INFO] [stdout] test asset_router::tests::serve_asset_skip_has_valid_witness_and_expr_path ... ok
[INFO] [stdout] test asset_router::tests::serve_asset_fallback_match ... ok
[INFO] [stdout] test assets::tests::certified_asset_expired_ttl_detected ... ok
[INFO] [stdout] test asset_router::tests::serve_asset_includes_additional_headers ... ok
[INFO] [stdout] test assets::tests::invalidate_all_dynamic_clears_all ... ok
[INFO] [stdout] test assets::tests::last_certified_at_returns_none_for_uncached ... ok
[INFO] [stdout] test assets::tests::invalidate_path_removes_dynamic_asset ... ok
[INFO] [stdout] test assets::tests::last_certified_at_returns_some_for_cached ... ok
[INFO] [stdout] test assets::tests::invalidate_all_dynamic_leaves_empty ... ok
[INFO] [stdout] test assets::tests::not_modified_resets_certified_at_with_ttl ... ok
[INFO] [stdout] test assets::tests::invalidate_path_double_removal_is_noop ... ok
[INFO] [stdout] test assets::tests::static_assets_unaffected_by_invalidation ... ok
[INFO] [stdout] test assets::tests::invalidate_prefix_does_not_over_match ... ok
[INFO] [stdout] test assets::tests::invalidate_prefix_removes_matching_keeps_others ... ok
[INFO] [stdout] test assets::tests::not_modified_preserves_asset_entry ... ok
[INFO] [stdout] test assets::tests::ttl_no_overflow_on_large_values ... ok
[INFO] [stdout] test assets::tests::ttl_one_ns_before_expiry_is_not_expired ... ok
[INFO] [stdout] test assets::tests::ttl_zero_duration_immediately_expired ... ok
[INFO] [stdout] test build::tests::camel_to_snake_multi_word ... ok
[INFO] [stdout] test build::tests::camel_to_snake_acronym ... ok
[INFO] [stdout] test build::tests::camel_to_snake_already_snake ... ok
[INFO] [stdout] test build::tests::camel_to_snake_leading_upper ... ok
[INFO] [stdout] test build::tests::camel_to_snake_simple ... ok
[INFO] [stdout] test build::tests::camel_to_snake_single_word ... ok
[INFO] [stdout] test build::tests::camel_to_snake_user_id ... ok
[INFO] [stdout] test build::tests::escape_json_backslash ... ok
[INFO] [stdout] test build::tests::escape_json_plain ... ok
[INFO] [stdout] test build::tests::escape_json_quote ... ok
[INFO] [stdout] test build::tests::file_to_handler_path_nested ... ok
[INFO] [stdout] test build::tests::file_to_handler_path_param_dir ... ok
[INFO] [stdout] test build::tests::file_to_handler_path_root ... ok
[INFO] [stdout] test build::tests::file_to_route_path_all_wildcard ... ok
[INFO] [stdout] test build::tests::file_to_route_path_deeply_nested ... ok
[INFO] [stdout] test build::tests::file_to_route_path_index ... ok
[INFO] [stdout] test build::tests::file_to_route_path_nested ... ok
[INFO] [stdout] test build::tests::file_to_route_path_static_name ... ok
[INFO] [stdout] test build::tests::file_to_route_path_param_dir ... ok
[INFO] [stdout] test build::tests::generated_wildcard_code_includes_url_decode ... ok
[INFO] [stdout] test build::tests::generated_param_code_includes_url_decode ... ok
[INFO] [stdout] test build::tests::has_pub_fn_absent ... ok
[INFO] [stdout] test build::tests::detect_method_exports_no_false_match ... ok
[INFO] [stdout] test build::tests::detect_method_exports_multiple ... ok
[INFO] [stdout] test build::tests::detect_method_exports_private_fn_ignored ... ok
[INFO] [stdout] test build::tests::has_pub_fn_near_miss ... ok
[INFO] [stdout] test asset_router::tests::is_expired_respects_certified_at_and_ttl ... ok
[INFO] [stdout] test build::tests::detect_method_exports_none ... ok
[INFO] [stdout] test build::tests::has_pub_fn_present ... ok
[INFO] [stdout] test build::tests::detect_method_exports_single_get ... ok
[INFO] [stdout] test build::tests::has_search_params_detects_struct ... ok
[INFO] [stdout] test build::tests::has_search_params_returns_false_when_absent ... ok
[INFO] [stdout] test build::tests::name_to_route_segment_all ... ok
[INFO] [stdout] test build::tests::has_search_params_ignores_private_struct ... ok
[INFO] [stdout] test build::tests::name_to_route_segment_static ... ok
[INFO] [stdout] test build::tests::name_to_route_segment_index ... ok
[INFO] [stdout] test build::tests::prefix_to_route_path_param ... ok
[INFO] [stdout] test build::tests::has_search_params_multiline_struct ... ok
[INFO] [stdout] test build::tests::prefix_to_route_path_empty ... ok
[INFO] [stdout] test build::tests::name_to_route_segment_param ... ok
[INFO] [stdout] test build::tests::prefix_to_route_path_single ... ok
[INFO] [stdout] test build::tests::prefix_to_route_path_nested ... ok
[INFO] [stdout] test build::tests::process_directory_basic_index ... ok
[INFO] [stdout] test build::tests::process_directory_empty_dir ... ok
[INFO] [stdout] test build::tests::process_directory_detects_certification_attribute ... ok
[INFO] [stdout] test build::tests::process_directory_not_found_detected ... ok
[INFO] [stdout] test build::tests::process_directory_no_certification_attribute ... ok
[INFO] [stdout] test build::tests::process_directory_route_attribute_override ... ok
[INFO] [stdout] test build::tests::process_directory_param_directory ... ok
[INFO] [stdout] test build::tests::process_directory_static_route ... ok
[INFO] [stdout] test build::tests::reserved_files_contains_middleware ... ok
[INFO] [stdout] test build::tests::process_directory_wildcard_all ... ok
[INFO] [stdout] test build::tests::reserved_files_contains_not_found ... ok
[INFO] [stdout] test build::tests::reserved_files_does_not_contain_all ... ok
[INFO] [stdout] test build::tests::reserved_files_does_not_contain_index ... ok
[INFO] [stdout] test build::tests::sanitize_mod_dot_replacement ... ok
[INFO] [stdout] test build::tests::sanitize_mod_plain ... ok
[INFO] [stdout] test build::tests::sanitize_mod_underscore_prefixed ... ok
[INFO] [stdout] test build::tests::scan_certification_attribute_absent ... ok
[INFO] [stdout] test build::tests::scan_certification_attribute_authenticated ... ok
[INFO] [stdout] test build::tests::scan_certification_attribute_custom ... ok
[INFO] [stdout] test build::tests::scan_certification_attribute_path_only ... ok
[INFO] [stdout] test build::tests::scan_certification_attribute_multiline ... ok
[INFO] [stdout] test build::tests::process_directory_middleware_detected ... ok
[INFO] [stdout] test build::tests::process_directory_search_params_detected ... ok
[INFO] [stdout] test build::tests::process_directory_nested_structure ... ok
[INFO] [stdout] test build::tests::scan_certification_attribute_fully_qualified_path ... ok
[INFO] [stdout] test build::tests::scan_certification_attribute_response_only ... ok
[INFO] [stdout] test build::tests::scan_certification_attribute_skip ... ok
[INFO] [stdout] test build::tests::scan_pub_fns_handles_multiline_signature ... ok
[INFO] [stdout] test build::tests::scan_pub_fns_handles_generics ... ok
[INFO] [stdout] test build::tests::scan_pub_fns_ignores_private_functions ... ok
[INFO] [stdout] test build::tests::scan_route_attribute_multiline ... ok
[INFO] [stdout] test build::tests::scan_route_attribute_missing ... ok
[INFO] [stdout] test build::tests::scan_route_attribute_basic ... ok
[INFO] [stdout] test build::tests::scan_route_attribute_no_false_match_on_mypath ... ok
[INFO] [stdout] test certification::tests::authenticated_has_authorization_in_request_headers ... ok
[INFO] [stdout] test build::tests::scan_route_attribute_non_route_attribute ... ok
[INFO] [stdout] test certification::tests::builder_with_no_options ... ok
[INFO] [stdout] test build::tests::scan_route_attribute_no_false_match_on_xpath ... ok
[INFO] [stdout] test certification::tests::certification_mode_clone_and_debug ... ok
[INFO] [stdout] test certification::tests::builder_with_all_options ... ok
[INFO] [stdout] test certification::tests::default_is_response_only ... ok
[INFO] [stdout] test certification::tests::full_config_default ... ok
[INFO] [stdout] test certification::tests::builder_with_partial_options ... ok
[INFO] [stdout] test certification::tests::response_only_config_default ... ok
[INFO] [stdout] test config::tests::additional_headers_override_custom_and_security ... ok
[INFO] [stdout] test certification::tests::skip_produces_skip ... ok
[INFO] [stdout] test config::tests::cache_config_default_has_none_and_empty ... ok
[INFO] [stdout] test config::tests::custom_dynamic_cache_control ... ok
[INFO] [stdout] test config::tests::custom_headers_override_security_headers ... ok
[INFO] [stdout] test certification::tests::header_normalization_to_lowercase ... ok
[INFO] [stdout] test config::tests::custom_static_cache_control ... ok
[INFO] [stdout] test config::tests::default_cache_control_reproduces_current_behavior ... ok
[INFO] [stdout] test build::tests::scan_certification_in_comment_ignored ... ok
[INFO] [stdout] test config::tests::default_is_permissive ... ok
[INFO] [stdout] test config::tests::merged_headers_later_overrides_earlier ... ok
[INFO] [stdout] test config::tests::none_produces_zero_headers ... ok
[INFO] [stdout] test config::tests::merged_headers_case_insensitive_override ... ok
[INFO] [stdout] test config::tests::asset_config_default_includes_default_cache_control ... ok
[INFO] [stdout] test config::tests::per_route_ttl_overrides_default_ttl ... ok
[INFO] [stdout] test context::tests::body_to_str_empty ... ok
[INFO] [stdout] test config::tests::permissive_produces_expected_headers ... ok
[INFO] [stdout] test config::tests::xss_protection_never_set ... ok
[INFO] [stdout] test config::tests::strict_produces_expected_headers ... ok
[INFO] [stdout] test context::tests::deserialize_search_params_empty_string ... ok
[INFO] [stdout] test context::tests::deserialize_search_params_missing_fields_default_to_none ... ok
[INFO] [stdout] test context::tests::deserialize_search_params_type_mismatch_falls_back ... ok
[INFO] [stdout] test context::tests::body_to_str_valid_utf8 ... ok
[INFO] [stdout] test context::tests::deserialize_search_params_malformed_encoding_does_not_panic ... ok
[INFO] [stdout] test context::tests::deserialize_search_params_valid ... ok
[INFO] [stdout] test context::tests::form_data_basic ... ok
[INFO] [stdout] test context::tests::form_data_url_encoded ... ok
[INFO] [stdout] test context::tests::form_empty_body_with_optional_fields ... ok
[INFO] [stdout] test context::tests::form_data_empty ... ok
[INFO] [stdout] test context::tests::deserialize_search_params_with_leading_question_mark ... ok
[INFO] [stdout] test context::tests::form_missing_field ... ok
[INFO] [stdout] test context::tests::form_invalid_utf8 ... ok
[INFO] [stdout] test context::tests::body_to_str_invalid_utf8 ... ok
[INFO] [stdout] test context::tests::header_case_insensitive ... ok
[INFO] [stdout] test context::tests::header_first_match_wins ... ok
[INFO] [stdout] test context::tests::form_valid ... ok
[INFO] [stdout] test context::tests::header_missing ... ok
[INFO] [stdout] test context::tests::json_invalid_json ... ok
[INFO] [stdout] test context::tests::json_valid ... ok
[INFO] [stdout] test context::tests::parse_form_body_basic_pairs ... ok
[INFO] [stdout] test context::tests::json_invalid_utf8 ... ok
[INFO] [stdout] test context::tests::parse_form_body_empty ... ok
[INFO] [stdout] test context::tests::parse_form_body_encoded_values ... ok
[INFO] [stdout] test context::tests::parse_form_body_plus_decoding ... ok
[INFO] [stdout] test build::tests::scan_route_attribute_with_spaces ... ok
[INFO] [stdout] test certification::tests::response_only_has_correct_default_config ... ok
[INFO] [stdout] test context::tests::parse_query_empty_url ... ok
[INFO] [stdout] test context::tests::parse_query_empty_value ... ok
[INFO] [stdout] test context::tests::parse_query_multiple_equals ... ok
[INFO] [stdout] test context::tests::parse_query_no_query_string ... ok
[INFO] [stdout] test context::tests::parse_query_skips_malformed_pairs ... ok
[INFO] [stdout] test context::tests::parse_query_url_encoded_values ... ok
[INFO] [stdout] test context::tests::parse_query_with_fragment ... ok
[INFO] [stdout] test context::tests::url_decode_double_encoded ... ok
[INFO] [stdout] test context::tests::parse_query_bare_query_string ... ok
[INFO] [stdout] test context::tests::parse_query_basic ... ok
[INFO] [stdout] test context::tests::url_decode_invalid_utf8_returns_valid_string ... ok
[INFO] [stdout] test context::tests::url_decode_null_byte ... ok
[INFO] [stdout] test context::tests::url_decode_only_percent ... ok
[INFO] [stdout] test context::tests::url_decode_percent_encoding ... ok
[INFO] [stdout] test context::tests::url_decode_percent_one_hex_then_eof ... ok
[INFO] [stdout] test context::tests::parse_query_empty_query_string ... ok
[INFO] [stdout] test context::tests::parse_query_empty_string_returns_empty_hashmap ... ok
[INFO] [stdout] test context::tests::url_decode_malformed_passthrough ... ok
[INFO] [stdout] test context::tests::url_decode_plain_passthrough ... ok
[INFO] [stdout] test context::tests::json_empty_body ... ok
[INFO] [stdout] test context::tests::url_decode_empty_string ... ok
[INFO] [stdout] test context::tests::url_decode_plus_as_space ... ok
[INFO] [stdout] test context::tests::url_decode_trailing_percent ... ok
[INFO] [stdout] test route_config::tests::route_config_clone_and_debug ... ok
[INFO] [stdout] test route_config::tests::route_config_with_authenticated_mode ... ok
[INFO] [stdout] test router::tests::empty_path_resolves_to_root ... ok
[INFO] [stdout] test router::tests::from_http_response_for_handler_result ... ok
[INFO] [stdout] test router::tests::get_route_config_returns_none_for_unknown ... ok
[INFO] [stdout] test route_config::tests::default_route_config_uses_response_only ... ok
[INFO] [stdout] test router::tests::multiple_param_children_first_wins ... ok
[INFO] [stdout] test router::tests::post_wildcard_segments_unreachable ... ok
[INFO] [stdout] test build::tests::process_directory_route_without_methods_panics - should panic ... ok
[INFO] [stdout] test build::tests::process_directory_ambiguous_route_panics - should panic ... ok
[INFO] [stdout] test router::tests::resolve_returns_correct_pattern_for_nested_param ... ok
[INFO] [stdout] test router::tests::resolve_returns_correct_pattern_for_param_route ... ok
[INFO] [stdout] test router::tests::resolve_returns_correct_pattern_for_static_route ... ok
[INFO] [stdout] test router::tests::resolve_returns_correct_pattern_for_root_route ... ok
[INFO] [stdout] test router::tests::route_config_lookup_via_pattern ... ok
[INFO] [stdout] test router::tests::routes_without_config_default_to_response_only ... ok
[INFO] [stdout] test router::tests::set_and_get_route_config ... ok
[INFO] [stdout] test router::tests::set_route_config_replaces_existing ... ok
[INFO] [stdout] test router::tests::test_404_match ... ok
[INFO] [stdout] test router::tests::test_all_seven_methods ... ok
[INFO] [stdout] test router::tests::test_custom_404_json_content_type ... ok
[INFO] [stdout] test router::tests::resolve_returns_correct_pattern_for_wildcard_route ... ok
[INFO] [stdout] test router::tests::test_custom_404_receives_full_request ... ok
[INFO] [stdout] test router::tests::test_custom_404_returns_custom_response ... ok
[INFO] [stdout] test router::tests::test_deep_wildcard_multi_segments ... ok
[INFO] [stdout] test router::tests::test_default_404_without_custom_handler ... ok
[INFO] [stdout] test router::tests::test_double_slash_matches_normalized ... ok
[INFO] [stdout] test router::tests::test_dynamic_match ... ok
[INFO] [stdout] test router::tests::test_empty_segments_ignored ... ok
[INFO] [stdout] test router::tests::test_empty_wildcard_match ... ok
[INFO] [stdout] test router::tests::test_exact_match ... ok
[INFO] [stdout] test router::tests::test_folder_root_wildcard_match ... ok
[INFO] [stdout] test router::tests::test_folder_wildcard_captures_tail ... ok
[INFO] [stdout] test router::tests::test_get_or_create_node_creates_intermediate_nodes ... ok
[INFO] [stdout] test router::tests::test_get_or_create_node_idempotent ... ok
[INFO] [stdout] test router::tests::test_get_or_create_node_param_and_wildcard ... ok
[INFO] [stdout] test router::tests::test_insert_result_and_resolve ... ok
[INFO] [stdout] test router::tests::test_get_or_create_node_root_path ... ok
[INFO] [stdout] test router::tests::test_match_path_returns_handlers ... ok
[INFO] [stdout] test router::tests::test_match_path_returns_none ... ok
[INFO] [stdout] test router::tests::test_many_parameters ... ok
[INFO] [stdout] test router::tests::test_method_dispatch_get_and_post ... ok
[INFO] [stdout] test router::tests::proptests::wrong_method_returns_method_not_allowed ... ok
[INFO] [stdout] test router::tests::test_middleware_modifies_request_before_handler ... ok
[INFO] [stdout] test router::tests::test_method_not_allowed ... ok
[INFO] [stdout] test router::tests::test_middleware_chain_order ... ok
[INFO] [stdout] test router::tests::test_middleware_modifies_response ... ok
[INFO] [stdout] test router::tests::test_middleware_short_circuit ... ok
[INFO] [stdout] test router::tests::test_middleware_ordering_independent_of_registration_order ... ok
[INFO] [stdout] test router::tests::test_middleware_works_in_both_paths ... ok
[INFO] [stdout] test router::tests::test_nested_dynamic_match ... ok
[INFO] [stdout] test router::tests::test_mixed_params_and_wildcard ... ok
[INFO] [stdout] test router::tests::test_multiple_middleware_on_not_found ... ok
[INFO] [stdout] test router::tests::test_not_found_only_root_middleware_for_non_api ... ok
[INFO] [stdout] test router::tests::test_param_precedence_over_wildcard ... ok
[INFO] [stdout] test router::tests::test_param_with_percent_encoded_space_resolves_raw ... ok
[INFO] [stdout] test router::tests::test_path_matches_prefix ... ok
[INFO] [stdout] test router::tests::test_no_middleware_handler_runs_directly ... ok
[INFO] [stdout] test router::tests::test_pathless_layout_route_a ... ok
[INFO] [stdout] test router::tests::test_normalize_prefix_canonical ... ok
[INFO] [stdout] test router::tests::test_posts_postid_edit ... ok
[INFO] [stdout] test router::tests::test_root_match ... ok
[INFO] [stdout] test router::tests::test_root_middleware_runs_before_custom_404 ... ok
[INFO] [stdout] test router::tests::test_root_not_found_when_only_nested ... ok
[INFO] [stdout] test router::tests::test_root_wildcard_captures_full_path ... ok
[INFO] [stdout] test router::tests::test_segment_count ... ok
[INFO] [stdout] test router::tests::test_root_middleware_runs_on_all_requests ... ok
[INFO] [stdout] test router::tests::test_scoped_middleware_only_matching_prefix ... ok
[INFO] [stdout] test router::tests::test_static_precedence_over_param ... ok
[INFO] [stdout] test router::tests::test_trailing_slash_static_match ... ok
[INFO] [stdout] test router::tests::test_unknown_path_returns_not_found ... ok
[INFO] [stdout] test router::tests::test_url_encoded_characters_in_param ... ok
[INFO] [stdout] test router::tests::test_url_encoded_characters_in_static_path ... ok
[INFO] [stdout] test router::tests::test_very_long_path ... ok
[INFO] [stdout] test router::tests::test_very_long_path_not_found ... ok
[INFO] [stdout] test router::tests::test_wildcard_with_percent_encoded_space_resolves_raw ... ok
[INFO] [stdout] test router::tests::trailing_slash_normalization ... ok
[INFO] [stdout] test router::tests::wildcard_consumes_remaining_segments ... ok
[INFO] [stdout] test router::tests::test_wildcard_match ... ok
[INFO] [stdout] test tests::asset_with_own_ttl_not_expired ... ok
[INFO] [stdout] test router::tests::test_set_middleware_replaces_previous ... ok
[INFO] [stdout] test tests::asset_without_ttl_uses_global_config ... ok
[INFO] [stdout] test tests::extract_content_type_case_insensitive ... ok
[INFO] [stdout] test tests::extract_content_type_html ... ok
[INFO] [stdout] test tests::extract_content_type_json ... ok
[INFO] [stdout] test tests::extract_content_type_missing_falls_back ... ok
[INFO] [stdout] test tests::handler_without_content_type_does_not_trap ... ok
[INFO] [stdout] test tests::http_request_malformed_url_returns_400 ... ok
[INFO] [stdout] test tests::http_request_update_malformed_url_returns_400 ... ok
[INFO] [stdout] test tests::asset_with_own_ttl_expired ... ok
[INFO] [stdout] test tests::static_asset_never_expires ... ok
[INFO] [stdout] test tests::asset_without_ttl_no_global_config_never_expires ... ok
[INFO] [stdout] test router::tests::proptests::non_inserted_routes_are_not_found ... ok
[INFO] [stdout] test router::tests::proptests::param_routes_capture_any_segment ... ok
[INFO] [stdout] test router::tests::proptests::wildcard_routes_capture_remaining_path ... ok
[INFO] [stdout] test router::tests::proptests::inserted_routes_are_always_found ... ok
[INFO] [stdout] test router::tests::proptests::multi_param_routes_capture_all ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 318 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.41s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests ic_asset_router
[INFO] [stdout] 
[INFO] [stdout] running 41 tests
[INFO] [stdout] test src/assets.rs - assets::certify_assets (line 20) ... ignored
[INFO] [stdout] test src/assets.rs - assets::certify_assets_with_mode (line 39) ... ignored
[INFO] [stdout] test src/assets.rs - assets::invalidate_all_dynamic (line 240) ... ignored
[INFO] [stdout] test src/assets.rs - assets::invalidate_path (line 189) ... ignored
[INFO] [stdout] test src/assets.rs - assets::invalidate_prefix (line 214) ... ignored
[INFO] [stdout] test src/assets.rs - assets::last_certified_at (line 271) ... ignored
[INFO] [stdout] test src/build.rs - build::generate_routes (line 97) ... ignored
[INFO] [stdout] test src/config.rs - config::AssetConfig (line 272) ... ok
[INFO] [stdout] test src/context.rs - context::RouteContext (line 83) ... ignored
[INFO] [stdout] test src/context.rs - context::RouteContext (line 98) ... ignored
[INFO] [stdout] test src/context.rs - context::RouteContext<P,S>::body_to_str (line 161) ... ignored
[INFO] [stdout] test src/context.rs - context::RouteContext<P,S>::form (line 220) ... ignored
[INFO] [stdout] test src/context.rs - context::RouteContext<P,S>::form_data (line 204) ... ignored
[INFO] [stdout] test src/context.rs - context::RouteContext<P,S>::header (line 143) ... ignored
[INFO] [stdout] test src/context.rs - context::RouteContext<P,S>::json (line 178) ... ignored
[INFO] [stdout] test src/config.rs - config::SecurityHeaders::strict (line 122) ... ok
[INFO] [stdout] test src/config.rs - config::SecurityHeaders::permissive (line 160) ... ok
[INFO] [stdout] test src/lib.rs - (line 104) ... ignored
[INFO] [stdout] test src/lib.rs - (line 127) ... ignored
[INFO] [stdout] test src/lib.rs - (line 178) ... ignored
[INFO] [stdout] test src/lib.rs - (line 217) ... ignored
[INFO] [stdout] test src/lib.rs - (line 278) ... ignored
[INFO] [stdout] test src/lib.rs - (line 294) ... ignored
[INFO] [stdout] test src/lib.rs - (line 318) ... ignored
[INFO] [stdout] test src/lib.rs - (line 340) ... ignored
[INFO] [stdout] test src/lib.rs - (line 356) ... ignored
[INFO] [stdout] test src/lib.rs - (line 374) ... ignored
[INFO] [stdout] test src/lib.rs - (line 38) ... ignored
[INFO] [stdout] test src/lib.rs - (line 48) ... ignored
[INFO] [stdout] test src/lib.rs - (line 68) ... ignored
[INFO] [stdout] test src/lib.rs - setup (line 605) ... ignored
[INFO] [stdout] test src/middleware.rs - middleware::MiddlewareFn (line 13) ... ignored
[INFO] [stdout] test src/route_config.rs - route_config::RouteConfig (line 27) ... ignored
[INFO] [stdout] test src/router.rs - router::HandlerResult (line 65) ... ignored
[INFO] [stdout] test src/certification.rs - certification::CertificationMode (line 48) ... ok
[INFO] [stdout] test src/config.rs - config::SecurityHeaders::none (line 191) ... ok
[INFO] [stdout] test src/certification.rs - certification::FullConfigBuilder (line 300) ... ok
[INFO] [stdout] test src/certification.rs - certification::FullConfig (line 253) ... ok
[INFO] [stdout] test src/certification.rs - certification::CertificationMode::authenticated (line 147) ... ok
[INFO] [stdout] test src/context.rs - context::parse_form_body (line 340) ... ok
[INFO] [stdout] test src/context.rs - context::url_decode (line 275) ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 10 passed; 0 failed; 31 ignored; 0 measured; 0 filtered out; finished in 3.32s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "881c217586ea793ec4cfc0b182fc2ac601c27905da2d22dd1420f6abb5a9f1a6", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "881c217586ea793ec4cfc0b182fc2ac601c27905da2d22dd1420f6abb5a9f1a6", kill_on_drop: false }`
[INFO] [stdout] 881c217586ea793ec4cfc0b182fc2ac601c27905da2d22dd1420f6abb5a9f1a6
